FIELD #1, 2 AS NEXT.REC$: LSET NEXT.REC$ = MKI$(1): PUT #1, 1
FOR L% = 2 TO maxrecords%
LSET NEXT.REC$ = MKI$(0): PUT #1, L%
NEXT L%
CLOSE #1
LOCATE 14, 10: PRINT "CREATING INDEX FILE .IDX"; SPC(20);
FOR L% = 65 TO 90
LOCATE 14, 30: PRINT CHR$(L%); : index.file$ = IN.STRING$ + CHR$(L%) + ".IDX": OPEN "R", #1, index.file$, 2: FIELD #1, 2 AS REC.PTR$
LSET REC.PTR$ = MKI$(1): PUT #1, 1: CLOSE #1
NEXT L%
'Dummy Record
API$(1) = "Angelo"
API$(2) = "Michael"
API$(3) = "123 Fir #21"
API$(4) = "Houston"
API$(5) = "Tx"
API$(6) = "77055-5555"
API$(7) = "(713)555-5555"
API$(8) = "( )555-1212"
API$(9) = " 1650.00"
API$(10) = " 123.65"
API$(11) = " 1526.35"
API$(12) = " 45.00"
API$(13) = "06-15-1988"
API$(14) = " INS = $266.88"
API$(15) = "06-25-1988"
API$(16) = " 35.00"
CLIENT.NUM% = 2
GOSUB 6800
RETURN
5490 IF ERL = 5460 THEN RESUME 5450
5500 'CLEAR HELP
5505 COLOR fc%, bc%: FOR V = 22 TO 24
LOCATE V, 5: PRINT SPC(68);
NEXT V: RETURN'Clear Help
6440 '
6000 'Client REC MOD Joe Lincoln 4-5-85
6010 'INPT CLIENT NUM
6020 REC.NUM.ERR% = 0: GOSUB 490: IF IN.STRING$ = "" THEN RETURN
6040 GOSUB 390: IF NUM.ERR% > 0 OR IN.NUM% > 10000 THEN BEEP: REC.NUM.ERR% = 1: GOTO 6000
6060 CLIENT.NUM% = IN.NUM%: RETURN
6061 '
6100 'READ CLIENT REC
F$ = CLIENT.PATH$ + "RECORD.IDX": BLANK.REC% = 0: OPEN "R", #5, F$, 2: FIELD #5, 2 AS RI.LAST.REC$: GET #5, CLIENT.NUM%: RI.LAST.REC% = CVI(RI.LAST.REC$): CLOSE #5: IF RI.LAST.REC% = 0 THEN BLANK.REC% = 1: RETURN
F$ = CLIENT.PATH$ + "CLIENT.APT": OPEN "R", #1, F$, 185
FIELD #1, 20 AS LAST.NAME$, 20 AS FIRST.NAME$, 20 AS STREET$, 17 AS CITY$, 2 AS STATE$, 10 AS ZIP$, 13 AS TELE1$, 13 AS TELE2$, 7 AS TOTAL$, 7 AS dwnpay$, 7 AS BAL$, 7 AS mopmt$, 10 AS duedate$, 15 AS NOTES$, 10 AS PMTDATE$, 7 AS AMTPAID$: GET #1, _
RI.LAST.REC%
API$(1) = LAST.NAME$
API$(2) = FIRST.NAME$
API$(3) = STREET$
API$(4) = CITY$
API$(5) = STATE$
API$(6) = ZIP$
API$(7) = TELE1$
API$(8) = TELE2$
API$(9) = TOTAL$
API$(10) = dwnpay$
API$(11) = BAL$
API$(12) = mopmt$
API$(13) = duedate$
API$(14) = NOTES$
API$(15) = PMTDATE$
API$(16) = AMTPAID$
CLOSE #1
GOSUB accounting
RETURN
6540 'WRITE CLIENT REC
6550 '
F$ = CLIENT.PATH$ + "CLIENT.APT": OPEN "R", #1, F$, 185
FIELD #1, 20 AS LAST.NAME$, 20 AS FIRST.NAME$, 20 AS STREET$, 17 AS CITY$, 2 AS STATE$, 10 AS ZIP$, 13 AS TELE1$, 13 AS TELE2$, 7 AS TOTAL$, 7 AS dwnpay$, 7 AS BAL$, 7 AS mopmt$, 10 AS duedate$, 15 AS NOTES$, 10 AS PMTDATE$, 7 AS AMTPAID$: _
GET #1, RI.LAST.REC%
LSET LAST.NAME$ = API$(1)
LSET FIRST.NAME$ = API$(2)
LSET STREET$ = API$(3)
LSET CITY$ = API$(4)
LSET STATE$ = API$(5)
LSET ZIP$ = API$(6)
LSET TELE1$ = API$(7)
LSET TELE2$ = API$(8)
LSET TOTAL$ = API$(9)
LSET dwnpay$ = API$(10)
LSET BAL$ = API$(11)
LSET duedate$ = API$(13)
LSET mopmt$ = API$(12)
LSET NOTES$ = API$(14)
LSET PMTDATE$ = API$(15)
LSET AMTPAID$ = API$(16)
PUT #1, RI.LAST.REC%
CLOSE #1
RETURN
6606 '
6800 'WRITE NEW CLIENT REC
6830 '
6840 F$ = CLIENT.PATH$ + "RECORD.IDX": OPEN "R", #5, F$, 2: FIELD #5, 2 AS RI.LAST.REC$: GET #5, 1: RI.LAST.REC% = CVI(RI.LAST.REC$) + 1: LSET RI.LAST.REC$ = MKI$(RI.LAST.REC%): PUT #5, 1
9812 LOCATE 1, 74: COLOR fc%, bc%: PRINT USING "####"; CLIENT.NUM%; : COLOR fc%, bc%
9814 FOR L% = 1 TO 16
9818 LOCATE V(L%), H(L%): IF LEFT$(API$(L%), 1) = CHR$(255) THEN PRINT STRING$(LN(L%), 46); : API$(L%) = CHR$(255): GOTO 9860
9820 COLOR fc%, bc%: PRINT API$(L%)
9822 FOR L1% = H(L%) + LN(L%) - 1 TO H(L%) STEP -1: IF SCREEN(V(L%), L1%) = 32 THEN LOCATE V(L%), L1%: PRINT " ";
9825 NEXT L1%
9857 API$(L%) = LEFT$(API$(L%), L1% - H(L%) + 1)
9860 NEXT L%
GOSUB 9260: RETURN
9865
9873 '
10000 'DEL
10001 '
10010 FUNKEY$ = " DELETE ": GOSUB 8680: GOSUB 9600: IF IN.STRING$ = "" THEN GOSUB 8160: RETURN
10012 FOR L% = 1 TO 16: LOCATE V(L%), H(L%): PRINT API$(L%): NEXT L%
10014 GOSUB 11000: LOCATE 20, 22: COLOR fc%, bc%: PRINT "Delete this CLIENT (Y/N) ? "; : COLOR 31, bc%: PRINT CHR$(219); : COLOR fc%, bc%: GOSUB 1000: IF a = 78 OR a = 110 OR a = 27 THEN 10035
10018 IF a = 89 OR a = 121 THEN 10020 ELSE BEEP: GOTO 10012
10020 F$ = CLIENT.PATH$ + "RECORD.IDX": OPEN "R", #5, F$, 2: FIELD #5, 2 AS RI.LAST.REC$: LSET RI.LAST.REC$ = MKI$(0): PUT #5, CLIENT.NUM%: CLOSE #5
10022 F$ = CLIENT.PATH$ + LEFT$(API$(1), 1) + ".IDX": OPEN "R", #3, F$, 2: FIELD #3, 2 AS REC.PTR$: GET #3, 1: MAX.REC% = CVI(REC.PTR$)
10024 FOR L1% = 2 TO MAX.REC%
10025 GET #3, L1%: TST% = CVI(REC.PTR$): IF TST% <> CLIENT.NUM% THEN 10026
10026 NEXT L1%
10027 IF L1% = MAX.REC% THEN 10030
10028 GET #3, MAX.REC%: LAST% = CVI(REC.PTR$): LSET REC.PTR$ = MKI$(LAST%): PUT #3, L1%
10030 LSET REC.PTR$ = MKI$(MAX.REC% - 1): PUT #3, 1: CLOSE #3
30867 COLOR CAL.FG%, CAL.BG%: TOP.ROW% = CAL.ROW + 5: FOR LP = 0 TO 22: LOCATE CAL.ROW + LP, CAL.COL: PRINT STRING$(30, 32); : NEXT LP' CLEAR AREA FOR CALENDAR
IF sdate AND NOT stime THEN hour = dhour: minute = dmin: Second = dsec
IF stime AND NOT sdate THEN day = dday: mnth = dmnth: year = dyear
IF sdate OR stime THEN CALL setftd(dname$, mnth, day, year, hour, minute, Second)
IF sdate THEN PRINT fnf$(mnth); "/"; fnf$(day); "/"; fnf$(year); " "; ELSE PRINT SPACE$(11);
IF stime THEN PRINT fnf$(hour); ":"; fnf$(minute); ":"; fnf$(Second); " "; ELSE PRINT SPACE$(11);
IF NOT sattr THEN RETURN
IF sattr THEN CALL SetFattr(dname$, attr)
pattr = attr: GOSUB DisplayAttr
RETURN
DisplayAttr:
IF pattr = 0 THEN PRINT "N";
IF pattr AND 1 THEN PRINT "R";
IF pattr AND 2 THEN PRINT "H";
IF pattr AND 4 THEN PRINT "S";
IF pattr AND 16 THEN PRINT "D";
IF pattr AND 32 THEN PRINT "A";
RETURN
wait.up:
a$ = STRING$(70, 32): center 23, a$
a$ = "Tap a key": center 23, a$: SOUND 250, 2
a$ = INPUT$(1)
RETURN
uh.oh:
CALL upcase(Fil$): a$ = "Path not found to " + Fil$ + " -> Press any key": center 12, a$
RETURN
bad.news:
a$ = INPUT$(1)
inflg% = 1
bail.out:
END SUB
DEFSNG A-Z
SUB memomenu
END SUB
SUB menu (fgd, BKGD, brdr, CLIENT.PATH$, APT.PATH$, PROG.NAME$, PRINTER$, VER$, fc%, bc%, today.date.str$, inflg%, SYS.PATH$)
'This is the heart of the program.
COLOR fgd, BKGD, brdr
REM
REM
step1:
a$ = VER$
CALL center(23, a$)
a$ = today.date.str$
LOCATE 2, 60: PRINT a$;
row = 8: col = 20: ' SET ROW AND COLUMN FOR MENU
C1F = fgd: C1B = BKGD' SET COLOR CODES
C2F = BKGD: C2B = fgd: ' SET BAR COLOR TO COLOR 0,2
'M$(1) = "ADD A NAME": M$(2) = "UPDATE A NAME": M$(3) = "DELETE A NAME": M$(4) = "FIND A NAME": M$(5) = "FILTER THE LIST": M$(6) = "SORT THE LIST": M$(7) = "PRINT THE LIST": M$(8) = "QUIT THE PROGRAM"
'np = 8:
'
step2:
GOSUB step3
CLS
GOTO menu.end
GOTO step1
GOTO step2
'
'
step3:
COLOR C1F, C1B: ' CLS
CALL center(7, "MENU SELECTIONS")
CALL center(row + 1, "Use <ARROWS> to select <ENTER> to Choose")
FOR j = 1 TO 16: x$ = INKEY$: NEXT: CH = 1
LS = 2: FOR j = 1 TO np: IF LEN(m$(j)) > LS THEN LS = LEN(m$(j))